package cn.com.huzo.service.inventory;

import cn.com.huzo.model.entities.inventory.StockInLinesEntity;
import huzofw.service.GenericManager;
import java.util.List;
import java.util.Map;

/**
 * 入库单明细数据管理服务对象接口。
 *
 * @author 吴旭
 */
public interface StockInLinesManager extends GenericManager<StockInLinesEntity, String> {

    /**
     * 更新入库单明细相应的数据
     *
     * @param itemList 要更新的数据
     * @param limit02 入库单明细（到货明细）列表每页显示的数据数量
     * @param pageIndex02 到货明细当前页
     * @param limit03 入库单明细列表每页显示的数据数量
     * @param pageIndex03 入库单明细当前页
     * @return 更新后的到货明细和入库单明细
     * @throws Exception
     */
    Map<String, Object> update(List<StockInLinesEntity> itemList,
            Integer limit02, Integer pageIndex02, Integer limit03, Integer pageIndex03) throws Exception;

    /**
     * 删除入库单明细
     *
     * @param headerId 入库单ID
     * @param linesId 要删除的明细ID
     * @param limit02 入库单明细（到货明细）列表每页显示的数据数量
     * @param pageIndex02 到货明细当前页
     * @param limit03 入库单明细列表每页显示的数据数量
     * @param pageIndex03 入库单明细当前页
     * @return 删除后的到货明细和入库单明细
     * @throws Exception
     */
    Map<String, Object> delete(Long headerId, String linesId,
            Integer limit02, Integer pageIndex02, Integer limit03, Integer pageIndex03) throws Exception;

    /**
     * 批量删除
     *
     * @param headerId 入库单ID
     * @param deletedBy 删除者
     * @param limit02 入库单明细（到货明细）列表每页显示的数据数量
     * @param pageIndex02 到货明细当前页
     * @param limit03 入库单明细列表每页显示的数据数量
     * @param pageIndex03 入库单明细当前页
     * @param itemList 要删除的数据
     * @return 删除后的到货明细和入库单明细
     * @throws Exception
     */
    Map<String, Object> batchDeleteLines(Long headerId, Long deletedBy,
            Integer limit02, Integer pageIndex02, Integer limit03, Integer pageIndex03,
            List<StockInLinesEntity> itemList) throws Exception;

    /**
     * 清除到货允许
     *
     * @param itemList 要清除的明细数据
     * @param limit02
     * @param pageIndex02
     * @param limit03
     * @param pageIndex03
     * @return 更新后的明细数据
     * @throws Exception
     */
    Map<String, Object> clearArrivalAllowed(List<StockInLinesEntity> itemList,
            Integer limit02, Integer pageIndex02, Integer limit03, Integer pageIndex03) throws Exception;
}
